home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-screenplay-
/
hd_installers
/
turrican2hd
/
src
/
turrican2hd.asm
< prev
Wrap
Assembly Source File
|
1999-02-08
|
2KB
|
113 lines
; Turrican 2 HD loader v1.0 by Kyzer/CSG
include jst.i
HD_PARAMS "Turrican2.d",1085664,1 ; 11264+(158*6800)
Mac_printf "Turrican 2 HD Loader v1.0 © 1998 Kyzer/CSG"
bsr loadhiscores
JSRABS LoadDisks
moveq #0,d0
move.l #CACRF_CopyBack,d1
JSRABS Degrade
GO_SUPERVISOR
SAVE_OSDATA $80000
moveq #0,d0
move.l #$800,d1
move.l #$400,d2
move.l #$60000,a0
JSRGEN ReadDiskPart ; D0=0 D1=LENGTH D2=OFFSET A0=LOADADDR
PATCHUSRJSR $42(a0),intro
PATCHUSRJMP $c0(a0),main
PATCHUSRJMP $394(a0),rawloader
JSRGEN FlushCachesHard
moveq #0,d0 ; 'we found no extension mem' lie
jmp (a0)
;--------------------------------------
rawloader
; get rawloader D0=bytelength D1=track D2=trackoffset A0=loadaddr
; to readdiskpart D0=0 D1=bytelength D2=diskfileoffset A0=loadaddr
exg.l d0,d1 ; d1 = bytelength, d0=track
mulu #6800,d0 ; offset = (track*6800)-2336 + trackoffset
add.l d0,d2
sub.l #2336,d2
moveq #0,d0
JSRGEN ReadDiskPart ; D0=0 D1=LENGTH D2=OFFSET A0=LOADADDR
JSRGEN FlushCachesHard
rts
; patch the call to run the intro
intro btst.b #7,$bfe001 ; don't run intro if fire pressed
beq.s .done
jsr $3010a ; run the intro
.again cmp.w #208,$30AE2 ; wait for it to end
bne.s .again
.done rts
main ; install patches on mainpart and run it
PATCHUSRJMP $9e2.w,rawloader
PATCHUSRJMP $be0.w,loadhi
PATCHUSRJMP $c5e.w,savehi
PATCHUSRJMP $6d18.w,keyb
JSRGEN FlushCachesHard
jmp $c0.w
;--------------------------------------
keyb move.b d0,$249.w
cmp.b #$59,d0 ; F10 key
beq.s .die
jmp $6d36.w
.die JSRGEN InGameExit
loadhi move.l highbuf(pc),a0
lea $25e.w,a1
tst.l (a0)
beq.s .exit
moveq #400/4-1,d0
.copy move.l (a0)+,(a1)+
dbra d0,.copy
.exit rts
savehi lea $25e.w,a0
move.l highbuf(pc),a1
moveq #400/4-1,d0
.cp move.l (a0)+,(a1)+
dbra d0,.cp
lea savehiscores(pc),a0
JSRGEN SetExitRoutine
rts
;--------------------------------------
loadhiscores
move.l #400,d0
JSRABS AllocExtMem ; easy allocate 400 byte!
lea highbuf(pc),a0
move.l d0,(a0)
bsr.s __hiset
JSRGEN ReadUserFileHD
rts
savehiscores
bsr.s __hiset
JSRGEN WriteUserFileHD
rts
__hiset moveq #0,d0
move.l #400,d1
lea hiname(pc),a0
move.l highbuf(pc),a1
rts
highbuf dc.l 0
hiname dc.b 'turrican2.hisc',0